<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>Navo Portable Library: navo/port/cdef.h文件参考</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body onload='searchBox.OnSelectItem(0);'>
<!-- 制作者 Doxygen 1.7.3 -->
<script type="text/javascript"><!--
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
--></script>
<div id="top">
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td style="padding-left: 0.5em;">
   <div id="projectname">Navo Portable Library&#160;<span id="projectnumber">Ver 1.0.20120827</span></div>
   <div id="projectbrief">Provides generic platform independent facilities.</div>
  </td>
 </tr>
 </tbody>
</table>
</div>
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>首页</span></a></li>
      <li><a href="modules.html"><span>模块</span></a></li>
      <li><a href="annotated.html"><span>数据结构</span></a></li>
      <li class="current"><a href="files.html"><span>文件</span></a></li>
      <li id="searchli">
        <div id="MSearchBox" class="MSearchBoxInactive">
        <span class="left">
          <img id="MSearchSelect" src="search/mag_sel.png"
               onmouseover="return searchBox.OnSearchSelectShow()"
               onmouseout="return searchBox.OnSearchSelectHide()"
               alt=""/>
          <input type="text" id="MSearchField" value="搜索" accesskey="S"
               onfocus="searchBox.OnSearchFieldFocus(true)" 
               onblur="searchBox.OnSearchFieldFocus(false)" 
               onkeyup="searchBox.OnSearchFieldChange(event)"/>
          </span><span class="right">
            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
          </span>
        </div>
      </li>
    </ul>
  </div>
  <div id="navrow2" class="tabs2">
    <ul class="tablist">
      <li><a href="files.html"><span>文件列表</span></a></li>
      <li><a href="globals.html"><span>全局定义</span></a></li>
    </ul>
  </div>
</div>
<div class="header">
  <div class="summary">
<a href="#nested-classes">数据结构</a> &#124;
<a href="#define-members">宏定义</a>  </div>
  <div class="headertitle">
<h1>navo/port/cdef.h文件参考</h1>  </div>
</div>
<div class="contents">

<p>Definitions and declarations for common constants, types, variables.  
<a href="#_details">更多...</a></p>
<div class="textblock"><code>#include &quot;<a class="el" href="config_8h_source.html">../config.h</a>&quot;</code><br/>
<code>#include &lt;stddef.h&gt;</code><br/>
</div>
<p><a href="cdef_8h_source.html">浏览该文件的源代码。</a></p>
<table class="memberdecls">
<tr><td colspan="2"><h2><a name="nested-classes"></a>
数据结构</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct____NV__AUTO__BLOCK__BUFF.html">__NV_AUTO_BLOCK_BUFF</a></td></tr>
<tr><td colspan="2"><h2><a name="define-members"></a>
宏定义</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac1d738bb181adee54a2abb33b75e2f53"></a><!-- doxytag: member="cdef.h::__NV_CDEF__" ref="ac1d738bb181adee54a2abb33b75e2f53" args="" -->
#define&#160;</td><td class="memItemRight" valign="bottom"><b>__NV_CDEF__</b></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a00d24c7231be28dbaf71f5408f30e44c"></a><!-- doxytag: member="cdef.h::inline" ref="a00d24c7231be28dbaf71f5408f30e44c" args="" -->
#define&#160;</td><td class="memItemRight" valign="bottom"><b>inline</b>&#160;&#160;&#160;__inline</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a492bdd5515dbdd11c3e4a0a382eabca0"></a><!-- doxytag: member="cdef.h::intrin_align" ref="a492bdd5515dbdd11c3e4a0a382eabca0" args="(N)" -->
#define&#160;</td><td class="memItemRight" valign="bottom"><b>intrin_align</b>(N)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa34c82d383d6d34f0220ff2aae6cb691"></a><!-- doxytag: member="cdef.h::dll_import" ref="aa34c82d383d6d34f0220ff2aae6cb691" args="" -->
#define&#160;</td><td class="memItemRight" valign="bottom"><b>dll_import</b></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a67f41b8b054160835c4952ffca0af45f"></a><!-- doxytag: member="cdef.h::dll_export" ref="a67f41b8b054160835c4952ffca0af45f" args="" -->
#define&#160;</td><td class="memItemRight" valign="bottom"><b>dll_export</b></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a72d1fff65d1785d97b1ca591a773bb03"></a><!-- doxytag: member="cdef.h::likely" ref="a72d1fff65d1785d97b1ca591a773bb03" args="(EXP)" -->
#define&#160;</td><td class="memItemRight" valign="bottom"><b>likely</b>(EXP)&#160;&#160;&#160;(EXP)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a21b21734e4594d39077046409f0a5f79"></a><!-- doxytag: member="cdef.h::unlikely" ref="a21b21734e4594d39077046409f0a5f79" args="(EXP)" -->
#define&#160;</td><td class="memItemRight" valign="bottom"><b>unlikely</b>(EXP)&#160;&#160;&#160;(EXP)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aaad6983001b96380252f043d5043573a"></a><!-- doxytag: member="cdef.h::prefetch" ref="aaad6983001b96380252f043d5043573a" args="(ADDRESS)" -->
#define&#160;</td><td class="memItemRight" valign="bottom"><b>prefetch</b>(ADDRESS)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab4ea6d0eb60b20846c2dd73cca742c85"></a><!-- doxytag: member="cdef.h::count_of" ref="ab4ea6d0eb60b20846c2dd73cca742c85" args="(ARRAY)" -->
#define&#160;</td><td class="memItemRight" valign="bottom"><b>count_of</b>(ARRAY)&#160;&#160;&#160;(sizeof(ARRAY) / sizeof(ARRAY[0]))</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0f0607b9e94219b9264527d29a438fb0"></a><!-- doxytag: member="cdef.h::bound_of" ref="a0f0607b9e94219b9264527d29a438fb0" args="(ARRAY)" -->
#define&#160;</td><td class="memItemRight" valign="bottom"><b>bound_of</b>(ARRAY)&#160;&#160;&#160;((ARRAY) + count_of(ARRAY))</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afa43e95f96b31ab98dd05cb430d6194d"></a><!-- doxytag: member="cdef.h::offset_of" ref="afa43e95f96b31ab98dd05cb430d6194d" args="(STRUCT, MEMBER)" -->
#define&#160;</td><td class="memItemRight" valign="bottom"><b>offset_of</b>(STRUCT, MEMBER)&#160;&#160;&#160;((size_t)(&amp;(((STRUCT *)0)-&gt;MEMBER)))</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a914b94800112b298dd14ca390ec293f5"></a><!-- doxytag: member="cdef.h::container_of" ref="a914b94800112b298dd14ca390ec293f5" args="(PTR, STRUCT, MEMBER)" -->
#define&#160;</td><td class="memItemRight" valign="bottom"><b>container_of</b>(PTR, STRUCT, MEMBER)&#160;&#160;&#160;((STRUCT *)(((char *)PTR) - offset_of(STRUCT, MEMBER)))</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2b9f888f0b377f70dfca885ca9af5215"></a><!-- doxytag: member="cdef.h::owner_of" ref="a2b9f888f0b377f70dfca885ca9af5215" args="(PTR, STRUCT, MEMBER)" -->
#define&#160;</td><td class="memItemRight" valign="bottom"><b>owner_of</b>(PTR, STRUCT, MEMBER)&#160;&#160;&#160;(* container_of(PTR, STRUCT, MEMBER))</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a194f75814f773f057a2310a31ca09857"></a><!-- doxytag: member="cdef.h::member_of" ref="a194f75814f773f057a2310a31ca09857" args="(PTR, STRUCT, MEMBER)" -->
#define&#160;</td><td class="memItemRight" valign="bottom"><b>member_of</b>(PTR, STRUCT, MEMBER)&#160;&#160;&#160;(((STRUCT *)PTR)-&gt;MEMBER)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af8f0e88cdc2043fad15ce7be82558bb1"></a><!-- doxytag: member="cdef.h::NV_NODE_LIST_NAME" ref="af8f0e88cdc2043fad15ce7be82558bb1" args="" -->
#define&#160;</td><td class="memItemRight" valign="bottom"><b>NV_NODE_LIST_NAME</b>&#160;&#160;&#160;__NV_node_list_body__</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a12b187605dd212e95d4485a289cdf121"></a><!-- doxytag: member="cdef.h::NV_UNIQUE_NODE_NAME" ref="a12b187605dd212e95d4485a289cdf121" args="" -->
#define&#160;</td><td class="memItemRight" valign="bottom"><b>NV_UNIQUE_NODE_NAME</b>&#160;&#160;&#160;__NV_unique_node__</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acca5742ebeceba6b6cb7faeaa77c2756"></a><!-- doxytag: member="cdef.h::node_list" ref="acca5742ebeceba6b6cb7faeaa77c2756" args="(BODY)" -->
#define&#160;</td><td class="memItemRight" valign="bottom"><b>node_list</b>(BODY)&#160;&#160;&#160;struct { BODY } NV_NODE_LIST_NAME</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a194d379818bc945c45f66b50ab0fc0ad"></a><!-- doxytag: member="cdef.h::node_struct" ref="a194d379818bc945c45f66b50ab0fc0ad" args="(NAME, NODE_BODY, DATA_BODY)" -->
#define&#160;</td><td class="memItemRight" valign="bottom"><b>node_struct</b>(NAME, NODE_BODY, DATA_BODY)&#160;&#160;&#160;struct NAME { node_list(NODE_BODY); DATA_BODY }</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa5db6077319153fa4b8238f4ea2a1c98"></a><!-- doxytag: member="cdef.h::snode_struct" ref="aa5db6077319153fa4b8238f4ea2a1c98" args="(NAME, NODE_TYPE, DATA_BODY)" -->
#define&#160;</td><td class="memItemRight" valign="bottom"><b>snode_struct</b>(NAME, NODE_TYPE, DATA_BODY)&#160;&#160;&#160;node_struct(NAME, NODE_TYPE NV_UNIQUE_NODE_NAME;, DATA_BODY)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a063da00b82874155c56cc892e0b359c8"></a><!-- doxytag: member="cdef.h::node_struct_of" ref="a063da00b82874155c56cc892e0b359c8" args="(PTR, TYPE, NODE)" -->
#define&#160;</td><td class="memItemRight" valign="bottom"><b>node_struct_of</b>(PTR, TYPE, NODE)&#160;&#160;&#160;container_of(PTR, TYPE, NV_NODE_LIST_NAME. NODE)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aad0165d4361d308da19933a9433efeb6"></a><!-- doxytag: member="cdef.h::snode_struct_of" ref="aad0165d4361d308da19933a9433efeb6" args="(PTR, TYPE)" -->
#define&#160;</td><td class="memItemRight" valign="bottom"><b>snode_struct_of</b>(PTR, TYPE)&#160;&#160;&#160;container_of(PTR, TYPE, NV_NODE_LIST_NAME.NV_UNIQUE_NODE_NAME)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a00f8d5d7bf5b91e4b9db78a7a876b313"></a><!-- doxytag: member="cdef.h::node_list_of" ref="a00f8d5d7bf5b91e4b9db78a7a876b313" args="(PTR)" -->
#define&#160;</td><td class="memItemRight" valign="bottom"><b>node_list_of</b>(PTR)&#160;&#160;&#160;((PTR)-&gt;NV_NODE_LIST_NAME)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a98d523fc182cbd2499a66dce532ed1c9"></a><!-- doxytag: member="cdef.h::snode_list_of" ref="a98d523fc182cbd2499a66dce532ed1c9" args="(PTR)" -->
#define&#160;</td><td class="memItemRight" valign="bottom"><b>snode_list_of</b>(PTR)&#160;&#160;&#160;node_list_of(PTR)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa20e72dc8e201a9bf10e375d52027fc9"></a><!-- doxytag: member="cdef.h::node_of" ref="aa20e72dc8e201a9bf10e375d52027fc9" args="(PTR, NODE_NAME)" -->
#define&#160;</td><td class="memItemRight" valign="bottom"><b>node_of</b>(PTR, NODE_NAME)&#160;&#160;&#160;(&amp;(node_list_of(PTR). NODE_NAME))</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8b431d1d82d176405dfa860ac67267d1"></a><!-- doxytag: member="cdef.h::snode_of" ref="a8b431d1d82d176405dfa860ac67267d1" args="(PTR)" -->
#define&#160;</td><td class="memItemRight" valign="bottom"><b>snode_of</b>(PTR)&#160;&#160;&#160;node_of(PTR, NV_UNIQUE_NODE_NAME)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4499c0d028b0481733d59b6fe7f55c9f"></a><!-- doxytag: member="cdef.h::NV_MAKE_STR" ref="a4499c0d028b0481733d59b6fe7f55c9f" args="(ID_STR)" -->
#define&#160;</td><td class="memItemRight" valign="bottom"><b>NV_MAKE_STR</b>(ID_STR)&#160;&#160;&#160;#ID_STR</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8e12295e95d0098bf3e3f5ab14796a24"></a><!-- doxytag: member="cdef.h::NV_MAKE_ID2" ref="a8e12295e95d0098bf3e3f5ab14796a24" args="(ID1, ID2)" -->
#define&#160;</td><td class="memItemRight" valign="bottom"><b>NV_MAKE_ID2</b>(ID1, ID2)&#160;&#160;&#160;ID1##ID2</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4690e4fa891631a152f210908995ec2d"></a><!-- doxytag: member="cdef.h::NV_MAKE_ID3" ref="a4690e4fa891631a152f210908995ec2d" args="(ID1, ID2, ID3)" -->
#define&#160;</td><td class="memItemRight" valign="bottom"><b>NV_MAKE_ID3</b>(ID1, ID2, ID3)&#160;&#160;&#160;ID1##ID2##ID3</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abf8da941b40254d0fb6fdd653683ea53"></a><!-- doxytag: member="cdef.h::NV_MAKE_ID4" ref="abf8da941b40254d0fb6fdd653683ea53" args="(ID1, ID2, ID3, ID4)" -->
#define&#160;</td><td class="memItemRight" valign="bottom"><b>NV_MAKE_ID4</b>(ID1, ID2, ID3, ID4)&#160;&#160;&#160;ID1##ID2##ID3##ID4</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="adef696dcbc7c99d4d12deadfe834c013"></a><!-- doxytag: member="cdef.h::NV_AUTO_BLOCK_MAX_LAYER" ref="adef696dcbc7c99d4d12deadfe834c013" args="" -->
#define&#160;</td><td class="memItemRight" valign="bottom"><b>NV_AUTO_BLOCK_MAX_LAYER</b>&#160;&#160;&#160;(31)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a93775ab784c09c02b7804462680d50c9"></a><!-- doxytag: member="cdef.h::NV_AUTO_BLOCK_TYPE" ref="a93775ab784c09c02b7804462680d50c9" args="" -->
#define&#160;</td><td class="memItemRight" valign="bottom"><b>NV_AUTO_BLOCK_TYPE</b>&#160;&#160;&#160;unsigned int</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac2241a5d9768dbd17f55637cf780ad3b"></a><!-- doxytag: member="cdef.h::auto_block_init" ref="ac2241a5d9768dbd17f55637cf780ad3b" args="()" -->
#define&#160;</td><td class="memItemRight" valign="bottom"><b>auto_block_init</b>()&#160;&#160;&#160;<a class="el" href="struct____NV__AUTO__BLOCK__BUFF.html">__NV_AUTO_BLOCK_BUFF</a> __NV_auto_block__ = {1, 0}</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><b>auto_block</b>(INIT, FINAL)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6c4121c5549683ee9397a9a29108052c"></a><!-- doxytag: member="cdef.h::break_block" ref="a6c4121c5549683ee9397a9a29108052c" args="" -->
#define&#160;</td><td class="memItemRight" valign="bottom"><b>break_block</b>&#160;&#160;&#160;__NV_auto_block__.buff |= __NV_auto_block__.layer; continue</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af3a88d2e0103b77399fa84848c8c92db"></a><!-- doxytag: member="cdef.h::AUTOBLOCK_IDLE" ref="af3a88d2e0103b77399fa84848c8c92db" args="" -->
#define&#160;</td><td class="memItemRight" valign="bottom"><b>AUTOBLOCK_IDLE</b>&#160;&#160;&#160;0</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aac200c68983db0af039188f7fca637c4"></a><!-- doxytag: member="cdef.h::nv_alloc" ref="aac200c68983db0af039188f7fca637c4" args="(TYPE)" -->
#define&#160;</td><td class="memItemRight" valign="bottom"><b>nv_alloc</b>(TYPE)&#160;&#160;&#160;((TYPE *)malloc(sizeof(TYPE)))</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a722f29d8dd9f083bc5205cac12eb442a"></a><!-- doxytag: member="cdef.h::nv_free" ref="a722f29d8dd9f083bc5205cac12eb442a" args="(PTR)" -->
#define&#160;</td><td class="memItemRight" valign="bottom"><b>nv_free</b>(PTR)&#160;&#160;&#160;free(PTR)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad72e66483cb2d7904954c8826b36607f"></a><!-- doxytag: member="cdef.h::nv_alloc_array" ref="ad72e66483cb2d7904954c8826b36607f" args="(TYPE, LENGTH)" -->
#define&#160;</td><td class="memItemRight" valign="bottom"><b>nv_alloc_array</b>(TYPE, LENGTH)&#160;&#160;&#160;((TYPE *)malloc(sizeof(TYPE) * (LENGTH)))</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a730c2c0bfbede2bca5c6890f474cfe21"></a><!-- doxytag: member="cdef.h::nv_free_array" ref="a730c2c0bfbede2bca5c6890f474cfe21" args="(PTR)" -->
#define&#160;</td><td class="memItemRight" valign="bottom"><b>nv_free_array</b>(PTR)&#160;&#160;&#160;free(PTR)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab79dc063721082299fdcc548bd2f703c"></a><!-- doxytag: member="cdef.h::nv_new" ref="ab79dc063721082299fdcc548bd2f703c" args="(TYPE)" -->
#define&#160;</td><td class="memItemRight" valign="bottom"><b>nv_new</b>(TYPE)&#160;&#160;&#160;TYPE##_construct(nv_alloc(TYPE))</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3063d36693d520f999633a6d715476c1"></a><!-- doxytag: member="cdef.h::nv_delete" ref="a3063d36693d520f999633a6d715476c1" args="(TYPE, PTR)" -->
#define&#160;</td><td class="memItemRight" valign="bottom"><b>nv_delete</b>(TYPE, PTR)&#160;&#160;&#160;nv_free(TYPE##_destruct(PTR))</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae402804f873816d1cb8b416fdb2e28b5"></a><!-- doxytag: member="cdef.h::NV_CONSTRUCT" ref="ae402804f873816d1cb8b416fdb2e28b5" args="(TYPE, PARAM_NAME)" -->
#define&#160;</td><td class="memItemRight" valign="bottom"><b>NV_CONSTRUCT</b>(TYPE, PARAM_NAME)&#160;&#160;&#160;TYPE* TYPE##_construct(TYPE* PARAM_NAME)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acac42e87660819f42636ae9998dedfc9"></a><!-- doxytag: member="cdef.h::NV_DESTRUCT" ref="acac42e87660819f42636ae9998dedfc9" args="(TYPE, PARAM_NAME)" -->
#define&#160;</td><td class="memItemRight" valign="bottom"><b>NV_DESTRUCT</b>(TYPE, PARAM_NAME)&#160;&#160;&#160;TYPE* TYPE##_destruct(TYPE* PARAM_NAME)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae01538fe34d85a46e9b09e1f4ec11121"></a><!-- doxytag: member="cdef.h::NV_CONSTRUCT_PTR" ref="ae01538fe34d85a46e9b09e1f4ec11121" args="(TYPE, NAME)" -->
#define&#160;</td><td class="memItemRight" valign="bottom"><b>NV_CONSTRUCT_PTR</b>(TYPE, NAME)&#160;&#160;&#160;TYPE* (* NAME)(TYPE*)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a96c74fe273d6b6531e5879f621d9f253"></a><!-- doxytag: member="cdef.h::NV_DESTRUCT_PTR" ref="a96c74fe273d6b6531e5879f621d9f253" args="(TYPE, NAME)" -->
#define&#160;</td><td class="memItemRight" valign="bottom"><b>NV_DESTRUCT_PTR</b>(TYPE, NAME)&#160;&#160;&#160;TYPE* (* NAME)(TYPE*)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a43ddb76104efad50d638cf32791c35d0"></a><!-- doxytag: member="cdef.h::break_using" ref="a43ddb76104efad50d638cf32791c35d0" args="" -->
#define&#160;</td><td class="memItemRight" valign="bottom"><b>break_using</b>&#160;&#160;&#160;break_block</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a82a84ac66d51ff5bf00d81d2f30dad80"></a><!-- doxytag: member="cdef.h::using_ptr" ref="a82a84ac66d51ff5bf00d81d2f30dad80" args="(PTR, RIGHT_VALUE)" -->
#define&#160;</td><td class="memItemRight" valign="bottom"><b>using_ptr</b>(PTR, RIGHT_VALUE)&#160;&#160;&#160;auto_block((PTR) = (RIGHT_VALUE), nv_free(PTR))</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acd2a9f2d6e61e2f70349956914672485"></a><!-- doxytag: member="cdef.h::using_new" ref="acd2a9f2d6e61e2f70349956914672485" args="(PTR, TYPE)" -->
#define&#160;</td><td class="memItemRight" valign="bottom"><b>using_new</b>(PTR, TYPE)&#160;&#160;&#160;using_ptr(PTR, nv_alloc(TYPE))</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a559e1fcf8e6ac810036ac13748a8029f"></a><!-- doxytag: member="cdef.h::using_array" ref="a559e1fcf8e6ac810036ac13748a8029f" args="(PTR, RIGHT_VALUE)" -->
#define&#160;</td><td class="memItemRight" valign="bottom"><b>using_array</b>(PTR, RIGHT_VALUE)&#160;&#160;&#160;auto_block((PTR) = (RIGHT_VALUE), nv_free_array(PTR))</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1a46a999bf9b6fd46a4a799f84eb704d"></a><!-- doxytag: member="cdef.h::using_new_array" ref="a1a46a999bf9b6fd46a4a799f84eb704d" args="(PTR, TYPE, LENGTH)" -->
#define&#160;</td><td class="memItemRight" valign="bottom"><b>using_new_array</b>(PTR, TYPE, LENGTH)&#160;&#160;&#160;using_ptr(PTR, nv_alloc_array(TYPE, LENGTH))</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1c447e7e9ab8084b194e811899d533d2"></a><!-- doxytag: member="cdef.h::using_obj" ref="a1c447e7e9ab8084b194e811899d533d2" args="(TYPE, PTR, RIGHT_VALUE)" -->
#define&#160;</td><td class="memItemRight" valign="bottom"><b>using_obj</b>(TYPE, PTR, RIGHT_VALUE)&#160;&#160;&#160;auto_block((PTR) = (RIGHT_VALUE), nv_delete(TYPE, PTR))</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8df8c726961c09fe1c2c20de272f6f8a"></a><!-- doxytag: member="cdef.h::using_new_obj" ref="a8df8c726961c09fe1c2c20de272f6f8a" args="(PTR, TYPE)" -->
#define&#160;</td><td class="memItemRight" valign="bottom"><b>using_new_obj</b>(PTR, TYPE)&#160;&#160;&#160;using_obj(TYPE, PTR, nv_new(TYPE))</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a475d93da6cb34f6e8d3275a7182c3dfb"></a><!-- doxytag: member="cdef.h::using_static_obj" ref="a475d93da6cb34f6e8d3275a7182c3dfb" args="(PTR, TYPE)" -->
#define&#160;</td><td class="memItemRight" valign="bottom"><b>using_static_obj</b>(PTR, TYPE)&#160;&#160;&#160;auto_block(TYPE##_construct(PTR), TYPE##_destruct(PTR))</td></tr>
</table>
<hr/><a name="_details"></a><h2>详细描述</h2>
<div class="textblock"><p>Definitions and declarations for common constants, types, variables. </p>
<p>Copyright (C) 2012-2022, Henry Kwok 郭弘扬. All rights reserved </p>

<p>在文件<a class="el" href="cdef_8h_source.html">cdef.h</a>中定义。</p>
</div><hr/><h2>宏定义文档</h2>
<a class="anchor" id="a07ae3447dd31a770bb1fda2d94f98800"></a><!-- doxytag: member="cdef.h::auto_block" ref="a07ae3447dd31a770bb1fda2d94f98800" args="(INIT, FINAL)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define auto_block</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">INIT, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">FINAL&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<b>值:</b><div class="fragment"><pre class="fragment">INIT ; <span class="keywordflow">for</span> (__NV_auto_block__.layer &lt;&lt;= 1,                      \
        __NV_auto_block__.buff &amp;= (~__NV_auto_block__.layer);       \
        (!(__NV_auto_block__.buff &amp; __NV_auto_block__.layer)) ||    \
        (__NV_auto_block__.layer &gt;&gt;= 1, (FINAL), 0);                \
        __NV_auto_block__.buff |= __NV_auto_block__.layer)
</pre></div>
<p>在文件<a class="el" href="cdef_8h_source.html">cdef.h</a>第<a class="el" href="cdef_8h_source.html#l00221">221</a>行定义。</p>

</div>
</div>
</div>
<!--- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>数据结构</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>宏定义</a></div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<hr class="footer"/><address class="footer"><small>Generated at 2015年七月16日 星期四 12:00:41 for Navo Portable Library by&#160;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.3 </small></address>
</body>
</html>
